package com.i2works.smartluolong.manage.entity.common;
//
//import com.google.common.collect.Iterables;
//import com.google.common.collect.Lists;
//import com.koal.muxin.utils.base.ConstantParam;
//import com.koal.muxin.utils.common.BaseUtil;
//import com.koal.muxin.utils.demo.DownUtil;
//import com.koal.muxin.utils.common.StrUtil;
//import org.apache.commons.lang3.StringUtils;
//import us.codecraft.webmagic.Page;
//import us.codecraft.webmagic.Site;
//import us.codecraft.webmagic.Spider;
//import us.codecraft.webmagic.processor.PageProcessor;
//import us.codecraft.webmagic.selector.Selectable;
//
//import javax.servlet.http.HttpServletRequest;
//import java.util.Calendar;
//import java.util.List;
//
//
///**
// * 豆瓣爬虫类
// *
// * @author Liu Yutao
// * @className DouBanSpider
// * @email koal@vip.qq.com
// * @date 2016/10/2 11:20
// */
//public class DouBanSpider implements PageProcessor {
//
//    //page.getJson().jsonPath("$.name").get();
//    //这样的方式来解析AJAX请求
//    //page.getJson().removePadding("callback").jsonPath("$.name").get();
//    //这样的方式来解析JSONP请求
//
//    private Integer doubanId;    //豆瓣电影ID
//    private DouBanDO douban = new DouBanDO();
//    private Integer typeId;      //单独采集类型；1评分，2演员，3导演，4编剧，5地区，6类型，7海报，8剧照，9年代，10imdb
//    private Site site = Site.me().setRetryTimes(3).setSleepTime(5000); // 抓取网站的相关配置，包括：编码、抓取间隔、重试次数等
//
//    private String InfoUrl;
//
//    private String StillUrl;
//
//    private HttpServletRequest request;
//
//    @Override
//    public Site getSite() {
//        return site;
//    }
//
//    /**
//     * 返回豆瓣实体
//     */
//    public DouBanDO bean() {
//        if (douban != null) {
//            return douban;
//        } else {
//            return null;
//        }
//    }
//
//    /**
//     * 采集初始化
//     */
//    public static DouBanDO init(Integer doubanId,String infoUrl, String stillUrl) {
//        DouBanSpider douBanSpider = new DouBanSpider(doubanId,infoUrl,stillUrl);
//        Spider.create(douBanSpider).addUrl(infoUrl).thread(3).run();
//        DouBanDO douban = douBanSpider.douban;
//        if (douban != null) {
//            return douban;
//        } else {
//            return null;
//        }
//    }
//
//
//    //带参构造；全部采集
//    public DouBanSpider(Integer doubanId) {
//        this.doubanId = doubanId;
//    }
//
//    //带参构造；单独采集评分、演员、导演、地区等
//    public DouBanSpider(Integer doubanId, Integer typeId) {
//        this.doubanId = doubanId;
//        this.typeId = typeId;
//    }
//
//    //带参构造;登录采集
//    public DouBanSpider(Integer doubanId,String infoUrl, String stillUrl) {
//        this.doubanId = doubanId;
//        this.InfoUrl = infoUrl;
//        this.StillUrl = stillUrl;
//    }
//
//
//    /**
//     *  process是定制爬虫逻辑的核心接口，在这里编写抽取逻辑
//     */
//    @Override
//    public void process(Page page) {
//        //添加采集网址
//        List<String> urls = Lists.newArrayList(InfoUrl,StillUrl);
//        page.addTargetRequests(urls);
//       if (page.getUrl().regex("www.baidu.com"  + "([0-9]*?)/$").match() || page.getUrl().regex("http(.*?)([0-9]*?)_info.html").match()) {
//                douban.setDouId(doubanId);
//                 //中文标题
//                String cnName = page.getHtml().xpath("//*/title/text()").replace("\\(.*\\)|\\（.*\\）", "").get().trim();
//                //英文标题
//                String enName = page.getHtml().xpath("//*[@id=\"mainpic\"]/a/img/@alt").get().trim();
//                if (enName.equalsIgnoreCase(cnName)) {
//                    douban.setCnName(cnName);
//                } else {
//                    douban.setCnName(cnName);
//                    douban.setEnName(enName);
//                }
//                //年代
//                String year = page.getHtml().xpath("//*[@class=\"year\"]/text()").replace("\\(","").replace("\\)","").get();
//                if (StringUtils.isNotBlank(year)) {
//                    douban.setYear(Integer.parseInt(year));
//                } else {
//                    douban.setYear(Calendar.YEAR);
//                }
//                //评分
//                String ratingStr = page.getHtml().xpath("//*[@property=\"v:average\"]/text()").get();
//                if (StringUtils.isNotBlank(ratingStr)) {
//                    float rating = Float.parseFloat(ratingStr) * 10;
//                    douban.setRating((int) rating);
//                } else {
//                    douban.setRating(0);
//                }
//                //别名
//                String aliasAllStr = page.getHtml().regex("又名:<\\/span>(.+?)<br").replace("\\(.*\\)|\\（.*\\）", "").get();
//                    List<String> aliasList = null;
//                    if (StringUtils.isNotBlank(aliasAllStr)) {
//                            List<String> aliasTempList = BaseUtil.strToList(aliasAllStr.trim(), "/");
//                            aliasList =Lists.newArrayList();
//                            if (aliasTempList != null && aliasTempList.size() > 0) {
//                                for (String s : aliasTempList) {
//                                    aliasList.add(s.trim());
//                                }
//                            }
//                    }
//                douban.setAliasName(aliasList);
//                //类型
//                List<String> typeTemp = page.getHtml().xpath("//*[@property=\"v:genre\"]/text()").all();
//                List<String> type = Lists.newArrayList();
//                //截取并保留2位汉字
//                for (String s : typeTemp) {
//                    String typeName;
//                    if (s.length() > 2) {
//                        typeName = s.substring(0, 2);
//                    } else {
//                        typeName = s.trim();
//                    }
//                    type.add(typeName);
//                }
//                douban.setType(type);
//                //地区
//                String areaAllStr = page.getHtml().regex("制片国家\\/地区:<\\/span>(.+?)<br").get();
//                List<String> areaList = null;
//                if (StringUtils.isNotBlank(areaAllStr)) {
//                    areaList = Lists.newArrayList();
//                    List<String> areaTempList = BaseUtil.strToList(areaAllStr, "/");
//                    if (areaTempList != null && areaTempList.size() > 0) {
//                        for (String s : areaTempList) {
//                            areaList.add(s.trim());
//                        }
//                    }
//                }
//                douban.setArea(areaList);
//                //海报
//                String poster = page.getHtml().xpath("//*[@id=\"mainpic\"]/a/img/@src").replace("movie_poster_cover/lpst", "photo/photo").get();
//                //海报本地化下载
//                List<String> posterList = DownUtil.downFiles(Lists.newArrayList(poster), GlobalConstant.UP_IMAGE_PATH.POSTER_SAVE_PATH, GlobalConstant.fileType.IMAGE);
//                if (posterList != null && posterList.size() > 0) {
//                    douban.setPoster(posterList.get(0));
//                } else {
//                    douban.setPoster();
//                }
//                //简介*api接口遇到换行就会截断，所以采集html
//                String intro = page.getHtml().xpath("//*[@id=\"link-report\"]/span[@property=\"v:summary\"]/text()").replace("•", "·").get();
//                String allIntro = page.getHtml().xpath("//*[@id=\"link-report\"]/span[@class=\"all\"]/text()").replace("•", "·").get();
//                if (StringUtils.isNotBlank(allIntro)) {
//                    douban.setIntro(StrUtil.html2Txt(allIntro));
//                } else {
//                    douban.setIntro(StrUtil.html2Txt(intro));
//                }
//                //导演
//                List<String> director = page.getHtml().xpath("//*[@id=\"info\"]/span[1]/span[2]/a/text()").replace("•", "·").replace("^[\\s]{1}", "").all();
//                douban.setDirector(director);
//                //编剧
//                List<String> wirter = page.getHtml().xpath("//*[@id=\"info\"]/span[2]/span[2]/a/text()").replace("•", "·").replace("^[\\s]{1}", "").all();
//                douban.setWriter(wirter);
//                //演员
//                List<String> actor = page.getHtml().regex("rel=\"v:starring\">(.*?)</a>").replace("•", "·").replace("^[\\s]{1}", "").all();
//                douban.setActor(actor);
//                //IMDB
//                String imdb = page.getHtml().regex("http://www.imdb.com/title/(.*?)\"", 1).get();
//                douban.setImdb(imdb);
//            }
//            //采集剧照
//            else if (page.getUrl().regex("www.baidu.com" + "([0-9]*?)/photos\\?type=S").match() || page.getUrl().regex("http(.*?)([0-9]*?)_stills.html").match()) {
//                List<String> stillsList = Lists.newArrayList();
//                int number = 0;
//                for (int i = 1; i <= 1 + 2; i++) {//有分割线，所有需要加2
//                    String imgSrc = page.getHtml().xpath("//*[@id=\"content\"]/div/div[1]/ul/li[" + i + "]/div[1]/a/img/@src").replace("thumb", "photo").get();
//                    if (StringUtils.isNotBlank(imgSrc)) {
//                        stillsList.add(imgSrc);
//                    }
//                }
//                //剧照本地化下载
//                List<String> stills = DownUtil.downFiles(stillsList, GlobalConstant.UP_IMAGE_PATH.STILLS_SAVE_PATH, GlobalConstant.fileType.IMAGE);
//                if (stills != null && stills.size() > 0) {
//                    douban.setStills(stills);
//                }
//            }
//    }
//
//
//    public static void main(String[] args) {
//        DouBanDO douban = DouBanSpider.init(3434070,"https://movie.douban.com/subject/3434070/", "https://movie.douban.com/subject/26879060//photos?type=S ");
//        System.err.println(douban.toString());
//
//    }
//
//}
